CentOs 7 JAVA daemon 구동 :: 자바일반[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

자바일반
[1]
등록일:2018-07-06 23:41:06 (0%)
작성자:
제목:CentOs 7 JAVA daemon 구동

centos 7 // jdk1.8


1. CentOs7 에 설치된 JDK 버전확인

  1.1 #java -version


 위에 캡쳐는 jdk가 정상적으로 설치되었을때 이고 설치가 되어있지 않다면

  자신의 CentOs버전과 비트에 맞는 JDK를 다운로드 받은후 설치하면된다.


2. 설치항목

 2.1 

  • GNU AutoConf (at least version 2.53)

  • An ANSI-C compliant compiler (GCC is good)

  • GNU Make

  • A Java Platform 2 compliant SDK

 (다른항목들은 자동으로 설치되어있었는데 AutoConf가 설치가 되어있지않아 #yum install autoconf 로 해결) 

 2.2

  • commons-daemon-1.0.5.jar

  • commons-daemon-1.0.5-src.tar.gz

 위에 2개항목은 다운받아서 옮기거나 직접다운로드하여도된다.

 #mkdir /root/daemonTest 생성후 #cd /root/daemonTest 로이동

 #wget http://archive.apache.org/dist/commons/daemon/binaries/commons-daemon-1.0.5.jar



 #wget http://archive.apache.org/dist/commons/daemon/source/commons-daemon-1.0.5-src.tar.gz



 다운로드 완료후 #tar zxvf commons-daemon-1.0.5-src.tar.gz 로 압축해제



3. 설정 및 실행

 3.1 

  2.2 에서 압축해제까지 한후 #cd commons-daemon-1.0.5-src/src/native/unix 로 이동후 

  support/buildconf.sh 입력



 support까지 들어간후 ./buildconf.sh 을 하게되면 configure.in 파일을 찾을수없다는 메시지가 나온다.

 3.2

  jsvs 생성하기전 /root/daemonTest/commons-daemon-1.0.5-src/src/native/unix 디렉토리내 목록

 


  unix 디렉토리에서 #./configure --with-java=/usr/java/jdk1.8/ (/usr/java/jdk1.8/ 내 JDK가 설치된 경로)


  #make



  #mv jsvc /root/daemonTest


4. JAVA 파일


package com.daemon.test;

 

import org.apache.commons.daemon.Daemon;

import org.apache.commons.daemon.DaemonContext;

import org.apache.commons.daemon.DaemonInitException;

 

public class daemonTest implements Daemon, Runnable {

    private String status = "";

    private int no = 0;

    private Thread thread = null;

 

    public void init(DaemonContext context) throws DaemonInitException,

            Exception {

        System.out.println("init...");

        String[] args = context.getArguments();

        if (args != null) {

            for (String arg : args) {

                System.out.println(arg);

            }

        }

        status = "INITED";

        this.thread = new Thread(this);

        System.out.println("init OK.");

        System.out.println();

    }

 

    public void start() {

        System.out.println("status: " + status);

        System.out.println("start...");

        status = "STARTED";

        this.thread.start();

        System.out.println("start OK.");

        System.out.println();

    }

 

    public void stop() throws Exception {

        System.out.println("status: " + status);

        System.out.println("stop...");

        status = "STOPED";

        this.thread.join(10);

        System.out.println("stop OK.");

        System.out.println();

    }

 

    public void destroy() {

        System.out.println("status: " + status);

        System.out.println("destroy...");

        status = "DESTROIED";

        System.out.println("destroy OK.");

        System.out.println();

    }

 

    public void run() {

        while (true) {

            System.out.println(no);

            try {

                Thread.sleep(1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

            if (no > 1000) {

                break;

            }

            no++;

        }

    }

}


  jar 로 export한후 /root/daemonTest 로 복사


5. shell script 작성

 

  #!/bin/sh

JAVA_HOME=/usr/java/jdk1.8/

JSVC=/root/daemonTest/jsvc

USER=root

 

DAEMON_HOME=/root/daemonTest

PID_FILE=$DAEMON_HOME/daemon.pid

OUT_FILE=$DAEMON_HOME/daemon.out

#ERR_FILE=$DAEMON_HOME/daemon.err

 

CLASSPATH=\

$DAEMON_HOME/commons-daemon-1.0.5.jar:\

$DAEMON_HOME/daemonTest.jar

 

MAIN_CLASS=com.daemon.test.daemonTest

case "$1" in

  start)

    #

    # Start Daemon

    #

    rm -f $OUT_FILE

    $JSVC \

    -user $USER \

    -java-home $JAVA_HOME \

    -pidfile $PID_FILE \

    -outfile $OUT_FILE \

    -errfile $OUT_FILE \

    -cp $CLASSPATH \

    $MAIN_CLASS

    #

    # To get a verbose JVM

    #-verbose \

    # To get a debug of jsvc.

    #-debug \

    exit $?

    ;;

 

  stop)

    #

    # Stop Daemon

    #

    $JSVC \

    -stop \

    -nodetach \

    -java-home $JAVA_HOME \

    -pidfile $PID_FILE \

    -outfile $OUT_FILE \

    -errfile $OUT_FILE \

    -cp $CLASSPATH \

    $MAIN_CLASS

    exit $?

    ;;

 

  *)

    echo "[Usage] daemonTest.sh start | stop"

    exit 1;;

esac


 작성한 파일을 /root/daemonTest 에 복사 후 ./daemonTest.sh 실행


 실행전


 실행후

 daemon.out, daemon.pid 가 추가되었다. daemon.out 에는 로그가 쌓여있고 pid는 쉘을 중지하면 사라진다.


cat daemon.out


 

6. 기타 오류사항

  쉘스크립트를 윈도우에서 작성한 후 linux로 옮겨서 실행을 하였더니 아래와같은 오류메시지가 출력되었다.

  /bin/sh^m bad interpreter no such file or directory

 해결방법은 http://tod2.tistory.com/28 을보고 해결하였다.



출처: http://hdgnote.tistory.com/7 [정리노트]
[본문링크] CentOs 7 JAVA daemon 구동
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34680
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.